﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Marmat.Forms.Win32API
{
    /// <summary>
    /// windows 消息枚举
    /// </summary>
    public sealed class Messages
    {
        /// <summary>
        /// 
        /// </summary>
        internal const int CS_DROPSHADOW = 0x00020000;
        /// <summary>
        /// 在客户区中。
        /// </summary>
        internal const int HTCLIENT = 0x1;
        /// <summary>
        /// 在标题条中。
        /// </summary>
        internal const int HTCAPTION = 0x2;
        /// <summary>
        /// 要求一个窗口重绘自己
        /// </summary>
        internal const int WM_PAINT = 0x000F;
        /// <summary>
        /// 当计算某个窗口的客户区大小和位置时发送此消息
        /// </summary>
        public const int WM_NCCALCSIZE = 0x0083;
        /// <summary>
        /// 当某个窗口的框架必须被绘制时，应用程序发送此消息给该窗口
        /// </summary>
        internal const int WM_NCPAINT = 0x0085;
        /// <summary>
        /// 当窗口垂直滚动条产生一个滚动事件时发送此消息给该窗口和滚动条的所有者
        /// </summary>
        internal const int WM_VSCROLL = 0x0115;
        /// <summary>
        /// 绘制滚动条控件前发送此消息给它的父窗口，可用来设置滚动条控件的文本和背景颜色
        /// </summary>
        internal const int WM_CTLCOLORSCROLLBAR = 0x0137;
        /// <summary>
        /// 鼠标移动
        /// </summary>
        internal const int WM_MOUSEMOVE = 0x0200;
        /// <summary>
        /// 当光标在窗口的非客户区（窗口标题栏及边框）内移动时发送此消息给该窗口
        /// </summary>
        internal const int WM_NCMOUSEMOVE = 0x00A0;
        /// <summary>
        /// 当光标在窗口的非客户区并按下鼠标左键时发送此消息
        /// </summary>
        internal const int WM_NCLBUTTONDOWN = 0x00A1;
        /// <summary>
        /// 当光标在窗口的非客户区并释放鼠标左键时发送此消息
        /// </summary>
        internal const int WM_NCLBUTTONUP = 0x00A2;
        /// <summary>
        /// 当光标在窗口的非客户区并双击鼠标左键时发送此消息
        /// </summary>
        internal const int WM_NCLBUTTONDBLCLK = 0x00A3;
        /// <summary>
        /// 当鼠标滚轮转动时发送此消息给当前获得焦点的窗口
        /// </summary>
        internal const int WM_MOUSEWHEEL = 0x020A;
        /// <summary>
        /// 按下鼠标左键
        /// </summary>
        internal const int WM_LBUTTONDOWN = 0x0201;
        /// <summary>
        /// 释放鼠标左键
        /// </summary>
        internal const int WM_LBUTTONUP = 0x0202;
        /// <summary>
        /// 按下鼠标右键
        /// </summary>
        internal const int WM_RBUTTONDOWN = 0x0204;
        /// <summary>
        /// 按下鼠标中键
        /// </summary>
        internal const int WM_MBUTTONDOWN = 0x0207;
        /// <summary>
        /// 移动鼠标，按住或释放鼠标时产生此消息
        /// </summary>
        internal const int WM_NCHITTEST = 0x0084;
        /// <summary>
        /// 当光标离开窗口客户区超过TrackMouseEvent()指定的时间时，发送此消息给该窗口
        /// </summary>
        internal const int WM_MOUSELEAVE = 0x02A3;
        /// <summary>
        /// 当窗口设定为不捕获鼠标事件时，发送此消息给该窗口
        /// </summary>
        internal const int WM_CAPTURECHANGED = 0x0215;
        internal const int SB_THUMBTRACK = 5;
        internal const int WM_HSCROLL = 0x114;
    }
}
